package com.gsmr.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期转换工具类
 */
public class DateUtil {
	public static void main(String[] args) {
		String s1="1645756186646";
		String data=DateUtil.longToString(Long.parseLong(s1), "yyyy-MM-dd HH:mm:ss");
//		Date date=new Date();
//		String date1=null;
//		date1=DateUtil.longToString(data,"yyyy-MM-dd HH:mm:sss");
		System.out.println(data);

	}

	/**
	 * date类型转换为String类型
	 * @param data Date类型的时间
	 * @param formatType 格式为yyyy-MM-dd HH:mm:ss
	 * @return String
	 */
	public static String dateToString(Date data, String formatType) {
		return new SimpleDateFormat(formatType).format(data);
	}

	/**
	 * long类型转换为String类型
	 * @param currentTime 要转换的long类型的时间
	 * @param formatType 要转换的string类型的时间格式
	 * @return String类型的日期
	 */
	public static String longToString(long currentTime, String formatType) {
		Date date = longToDate(currentTime, formatType); // long类型转成Date类型
		String strTime = dateToString(date, formatType); // date类型转成String
		return strTime;
	}

	/**
	 * string类型转换为date类型，strTime的时间格式必须要与formatType的时间格式相同
	 * @param strTime 要转换的string类型的时间
	 * @param formatType 要转换的格式yyyy-MM-dd HH:mm:ss
	 * @return Date类型日期
	 */
	public static Date stringToDate(String strTime, String formatType)  {
		SimpleDateFormat formatter = new SimpleDateFormat(formatType);
		Date date = null;
		try {
			date = formatter.parse(strTime);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * long转换为Date类型
	 * @param currentTime 要转换的long类型的时间
	 * @param formatType 要转换的时间格式yyyy-MM-dd HH:mm:ss
	 * @return Date类型日期
	 */
	public static Date longToDate(long currentTime, String formatType) {
		Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间
		String sDateTime = dateToString(dateOld, formatType); // 把date类型的时间转换为string
		Date date = stringToDate(sDateTime, formatType); // 把String类型转换为Date类型
		return date;
	}

	/**
	 * string类型转换为long类型，strTime的时间格式和formatType的时间格式必须相同
	 * @param strTime 要转换的String类型的时间
	 * @param formatType 时间格式
	 * @return long类型的日期
	 */
	public static long stringToLong(String strTime, String formatType) {
		Date date = null;
		try {
			date = stringToDate(strTime, formatType);
		} catch (Exception e) {
			e.printStackTrace();
		} // String类型转成date类型
		if (date == null || date.equals("")) {
			return 0;
		} else {
			long currentTime = dateToLong(date); // date类型转成long类型
			return currentTime;
		}
	}

	public static long dateToLong(Date date) {
		return date.getTime();
	}
}